import java.util.ArrayList;

/**
 * 主机
 */
public class Host implements NetNode {
    private String mac;//mac地址

    private ArrayList<NetNode> nodes;//和主机在同一网段的设备
    private String netSeg; //网段


    public String getNetSeg() {
        return netSeg;
    }

    public void setNetSeg(String netSeg) {
        this.netSeg = netSeg;
    }



    public ArrayList<NetNode> getNodes() {
        return nodes;
    }

    public void setNodes(ArrayList<NetNode> nodes) {
        this.nodes = nodes;
    }


    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }




    public Host(String  mac){
        this.mac =mac;
    }


    /*
    传输帧方法，如果目的地址是本主机，结束；否则查找和本机同一网段的设备，并传输帧
     */
    @Override
    public void transferFrame(NetNode inSide, String frame) {
        //关于inside:  比如inside是交换机e1，表示帧从e1传输到了本机
        String[] s = frame.split(" ");
        String descMac = s[1];
        String data = s[2];
        if (descMac.equals(this.mac)){
            System.out.println("mac地址是"+this.mac+"的主机正确接收了帧"+frame);
            return;
        }
        if (inSide == null){
            //表示当前主机是传输帧的起始主机，向同一网段的其他设备传输帧
            for (NetNode node : nodes) {
                node.transferFrame(this,frame);
            }
        }else {
            //表示帧从其他设备进入本主机 不做处理

        }
    }

    @Override
    public String getId() {
        return this.getMac();
    }
}

